package com.honghe.system.service;

import java.util.List;
import java.util.Map;
import com.honghe.system.domain.BankCustomerCases;

/**
 * 客户信息Service接口
 * 
 * @author ruoyi
 * @date 2025-04-13
 */
public interface IBankCustomerCasesService 
{
    /**
     * 查询客户信息
     * 
     * @param caseId 客户信息主键
     * @return 客户信息
     */
    public BankCustomerCases selectBankCustomerCasesByCaseId(Long caseId);

    /**
     * 查询客户信息列表
     * 
     * @param bankCustomerCases 客户信息
     * @return 客户信息集合
     */
    public List<BankCustomerCases> selectBankCustomerCasesList(BankCustomerCases bankCustomerCases);

    /**
     * 获取公海池数量统计
     * 
     * @return 公海池数量统计列表
     */
    public List<Map<String, Object>> selectPoolCounts();

    /**
     * 获取时间段内新增客户统计
     * 
     * @param beginTime 开始时间
     * @param endTime 结束时间
     * @param poolType 公海池类型
     * @return 新增客户统计列表
     */
    public List<Map<String, Object>> selectNewCustomerStats(String beginTime, String endTime, String poolType);

    /**
     * 新增客户信息
     * 
     * @param bankCustomerCases 客户信息
     * @return 结果
     */
    public int insertBankCustomerCases(BankCustomerCases bankCustomerCases);

    /**
     * 修改客户信息
     * 
     * @param bankCustomerCases 客户信息
     * @return 结果
     */
    public int updateBankCustomerCases(BankCustomerCases bankCustomerCases);

    /**
     * 批量删除客户信息
     * 
     * @param caseIds 需要删除的客户信息主键集合
     * @return 结果
     */
    public int deleteBankCustomerCasesByCaseIds(Long[] caseIds);

    /**
     * 删除客户信息信息
     * 
     * @param caseId 客户信息主键
     * @return 结果
     */
    public int deleteBankCustomerCasesByCaseId(Long caseId);

    /**
     * 批量分配客户到经办人
     * 
     * @param ids 客户ID列表
     * @param handlerUser 经办人
     * @param updateBy 更新人
     * @return 结果
     */
    public int assignCases(Long[] ids, String handlerUser, String updateBy);

    /**
     * 批量更新公海池信息
     * 
     * @param ids 客户ID列表
     * @param poolType 公海池类型
     * @param updateBy 更新人
     * @return 结果
     */
    public int updateCasesPool(Long[] ids, String poolType, String updateBy);

    /**
     * 更新客户池类型
     * 
     * @param ids 客户ID数组
     * @param poolType 池类型
     * @param caseHandler 案件负责人
     * @param handlerUser 经办人
     * @param updateBy 更新者
     * @return 结果
     */
    public int updateCasesPool(Long[] ids, String poolType, String caseHandler, String handlerUser, String updateBy);
}
